package com.spzx.product.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.spzx.product.api.domain.vo.CategoryVo;
import com.spzx.product.domain.Category;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 商品分类Service接口
 */
public interface ICategoryService extends IService<Category>{

    /**
     * 根据parentId查询子分类集合
     * @param parentId 菜单父id
     * @return 子分类集合
     */
    List<Category> treeSelect(Long parentId);

    /**
     * 根据当前分类id,查询当前分类id和所有父级id，封装在ArrayList中(存在添加顺序)。
     * @param id 当前分类id
     * @return 当前分类id和所有父级id集合
     */
    List<Long> getAllParentId(Long id);

    /**
     * 分类导出Excel
     * @param response
     */
    void exportData(HttpServletResponse response);

    /**
     * 导入Excel
     * @param file
     */
    void importData(MultipartFile file);

    /**
     * 查询首页所有一级分类
     * @return
     */
    List<CategoryVo> getOneCategory();

    /**
     * 查询所有分类树结构
     *
     * @return 所有一级分类（一级分类children集合属性放二级分类），每一个二级分类对象的children集合存放三级分类。
     */
    List<CategoryVo> tree();

    /**
     * 采用递归，根据指定分类id获取当前类别及父类别的分类对象集合。
     * @param id 当前分类id
     * @param categoryList 自带数据容器，方法返回的数据放在这个容器里。
     * @return 当前分类对象和所有父级类别对象 =》集合
     */
    //List<Category> getParentIdList(Long id,List<Category> categoryList); //私有即可
}